From 0dd07d2fe8dc4e98d0f9eddbdb88f2d144c8fd51 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 18 Jul 2019 14:29:43 +0200 Subject: [PATCH] treewide: merge phase1 and phase2 cleanup procedures Signed-off-by: Jo-Philipp Wich --- phase1/master.cfg | 2 +- phase2/master.cfg | 6 +- scripts/cleanup-phase2.sh | 95 ----------------------- scripts/{cleanup-phase1.sh => cleanup.sh} | 13 ++-- 4 files changed, 10 insertions(+), 106 deletions(-) delete mode 100755 scripts/cleanup-phase2.sh rename scripts/{cleanup-phase1.sh => cleanup.sh} (87%) diff --git a/phase1/master.cfg b/phase1/master.cfg index 46e1a72..d9ca8d8 100644 --- a/phase1/master.cfg +++ b/phase1/master.cfg @@ -543,7 +543,7 @@ for target in targets: # cleanup.sh if needed factory.addStep(FileDownload( name = "dlcleanupsh", - mastersrc = scripts_dir + '/cleanup-phase1.sh', + mastersrc = scripts_dir + '/cleanup.sh', slavedest = "../cleanup.sh", mode = 0755, doStepIf = IsCleanupRequested)) diff --git a/phase2/master.cfg b/phase2/master.cfg index 2cfd557..ed09c8b 100644 --- a/phase2/master.cfg +++ b/phase2/master.cfg @@ -268,8 +268,8 @@ for arch in arches: # prepare workspace factory.addStep(FileDownload( - mastersrc = scripts_dir + '/cleanup-phase2.sh', - slavedest = "cleanup.sh", + mastersrc = scripts_dir + '/cleanup.sh', + slavedest = "../cleanup.sh", mode = 0755)) if not persistent: @@ -277,6 +277,7 @@ for arch in arches: name = "cleanold", description = "Cleaning previous builds", command = ["./cleanup.sh", buildbot_url, WithProperties("%(slavename)s"), WithProperties("%(buildername)s"), "full"], + workdir = ".", haltOnFailure = True, timeout = 2400)) @@ -284,6 +285,7 @@ for arch in arches: name = "cleanup", description = "Cleaning work area", command = ["./cleanup.sh", buildbot_url, WithProperties("%(slavename)s"), WithProperties("%(buildername)s"), "single"], + workdir = ".", haltOnFailure = True, timeout = 2400)) diff --git a/scripts/cleanup-phase2.sh b/scripts/cleanup-phase2.sh deleted file mode 100755 index 2af7b9f..0000000 --- a/scripts/cleanup-phase2.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/bash - -export LC_ALL=C - -buildbot_url="$1" -current_slave="$2" -current_builder="$3" -current_mode="$4" - -running_builders="$(wget -qO- "${buildbot_url%/}/json/slaves/$current_slave?as_text=1" | sed -ne 's,^.*"builderName": "\(.*\)".*$,\1,p')" - -find /tmp/ -maxdepth 1 -mtime +1 '(' -name 'npm-*' -or -name 'jsmake-*' ')' -print0 | xargs -0 -r rm -vr - -is_running() { - local running_builder - for running_builder in $running_builders; do - if [ "${running_builder//\//_}" = "${1//\//_}" ]; then - return 0 - fi - done - return 1 -} - -do_cleanup() { - printf "Cleaning up '$current_builder' work directory" - - rm -f cleanup.sh - rm -vrf sdk/ | while read entry; do - case "$entry" in *directory:*) - printf "." - esac - done - - echo "" -} - -# -# Sanity check, current builder should be in running builders list -# - -if ! is_running "$current_builder"; then - echo "Current builder '$current_builder' not found in current builders list, aborting cleanup." - exit 1 -fi - - -# -# Clean up leftovers -# - -if [ "$current_mode" = full ]; then -( - if ! flock -x -w 2700 200; then - echo "Unable to obtain exclusive lock, aborting cleanup." - exit 1 - fi - - for build_dir in ../../*; do - - build_dir="$(readlink -f "$build_dir")" - - if [ -z "$build_dir" ] || [ ! -d "$build_dir/build/sdk" ]; then - continue - fi - - current_builder="${build_dir##*/}" - - if is_running "$current_builder"; then - echo "Skipping currently active '$current_builder' work directory." - continue - fi - - ( - cd "$build_dir/build" - - #if [ -n "$(git status --porcelain | grep -v update_hostkey.sh | grep -v cleanup.sh)" ]; then - if [ -d sdk ]; then - do_cleanup - else - echo "Skipping clean '$current_builder' work directory." - fi - ) - done - -) 200>../../cleanup.lock - -# -# Clean up current build -# - -else - do_cleanup -fi - -exit 0 diff --git a/scripts/cleanup-phase1.sh b/scripts/cleanup.sh similarity index 87% rename from scripts/cleanup-phase1.sh rename to scripts/cleanup.sh index 4260958..dc47529 100755 --- a/scripts/cleanup-phase1.sh +++ b/scripts/cleanup.sh @@ -9,6 +9,8 @@ current_mode="$4" running_builders="$(wget -qO- "${master_url%/}/json/slaves/$current_slave?as_text=1" | sed -ne 's,^.*"builderName": "\(.*\)".*$,\1,p')" +find /tmp/ -maxdepth 1 -mtime +1 '(' -name 'npm-*' -or -name 'jsmake-*' ')' -print0 | xargs -0 -r rm -vr + is_running() { local running_builder for running_builder in $running_builders; do @@ -29,7 +31,7 @@ do_cleanup() { else find . -mindepth 1 -maxdepth 1 | while read entry; do rm -vrf "$entry" | while read entry2; do - case "$entry2" in *directory:*) + case "$entry2" in *directory[:\ ]*) printf "." esac done @@ -64,7 +66,7 @@ if [ "$current_mode" = full ]; then build_dir="$(readlink -f "$build_dir")" - if [ -z "$build_dir" ] || [ ! -d "$build_dir/build/build_dir" ]; then + if [ -z "$build_dir" ] || [ ! -d "$build_dir/build" ]; then continue fi @@ -77,12 +79,7 @@ if [ "$current_mode" = full ]; then ( cd "$build_dir/build" - - if [ -d build_dir ]; then - do_cleanup - else - echo "Skipping clean '$current_builder' work directory." - fi + do_cleanup ) done -- 2.30.2